package notes.java.concurrent;

import java.util.Vector;

/**
 * 
 * vector是线程安全的，但下面这个例子，其实它并不安全
 *  
 *   1、初始化一个Vector，添加10个元素
 *   2、线程一，删除元素
 *   3、线程二，获取元素
  *      结果 报了很多数组越界异常，说明同一时刻，两个线程，线程一删除了，线程二正好获取该元素，导致越界异常
 *
 */
public class T9_Vector {
	
	private static Vector<Integer> vector = new Vector<>();
	
	// 初始化数据
	private static void initVector() {
		for (int i = 0; i < 10; i++) {
			vector.add(i);
		}
	}
	public static void main(String[] args) {
		while(true) {
			initVector();
			
			// 线程一，删除数据
			Thread thread1 = new Thread() {
				@Override
				public void run() {
					for (int i = 0; i < vector.size(); i++) {
						vector.remove(i);
					}
				};
			};
			
			// 线程二，获取数据
			Thread thread2 = new Thread() {
				@Override
				public void run() {
					for (int i = 0; i < vector.size(); i++) {
						vector.get(i);
					}
				};
			};
			
			// 启动线程
			thread1.start();
			thread2.start();
		}
	}
}
